package co.gov.medellin.ssti.sub.model.service.impl;

import java.util.Collection;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import co.gov.medellin.ssti.sub.model.dao.UsuarioSubprogramaDAO;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.service.UsuarioSubprogramaService;
import co.gov.medellin.ssti.sub.model.vo.AreaVO;
import co.gov.medellin.ssti.sub.model.vo.UsuarioSubprogramaVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.UserVO;

@Service
public class UsuarioSubprogramaServiceImpl implements UsuarioSubprogramaService {
	@Autowired
	UsuarioSubprogramaDAO usuarioSubprogramaDAOImpl2;

	public Collection<UsuarioSubprogramaVO> findUsuarios(String condicion) {
		try {
			return usuarioSubprogramaDAOImpl2.findUsuarios(condicion);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public long findSubprogramaSede(Long codeSubprograma, Long codeSede) {
		try {
			return usuarioSubprogramaDAOImpl2.findSubprogramaSede(
					codeSubprograma, codeSede);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<UsuarioSubprogramaVO> findNombres(Long codeSubprograma,
			Long codeSede, Long codePrograma, Long codeUsuario) {
		try {
			return usuarioSubprogramaDAOImpl2.findNombres(codeSubprograma,
					codeSede, codePrograma, codeUsuario);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean isUsuarioValido(Long codeUsuario, Long codeSubprogramaSede) {
		try {
			return usuarioSubprogramaDAOImpl2.isUsuarioValido(codeUsuario,
					codeSubprogramaSede);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public int insertUsuarioSubprograma(Long codeSubprogramaSede,
			Long codeUsuario) {
		try {
			return usuarioSubprogramaDAOImpl2.insertUsuarioSubprograma(
					codeSubprogramaSede, codeUsuario);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<AreaVO> findSecretaria() {
		try {
			return usuarioSubprogramaDAOImpl2.findSecretaria();
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public int insertPermisosReportes(String[] arr) {
		try {
			return usuarioSubprogramaDAOImpl2.insertPermisosReportes(arr);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public List<UsuarioSubprogramaVO> findPermisosUsuarios(Long codeUsuario,
			Long codeSubprograma) {
		try {
			return usuarioSubprogramaDAOImpl2.findPermisosUsuarios(codeUsuario,
					codeSubprograma);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public List<UserVO> findGrupoUsuarios(Long codeUsuario) {
		try {
			return usuarioSubprogramaDAOImpl2.findGrupoUsuarios(codeUsuario);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String findCodeSubprograma(Long codeSubprogramaSede) {
		try {
			return usuarioSubprogramaDAOImpl2
					.findCodeSubprograma(codeSubprogramaSede);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Long findCodeSede(Long codeSubprogramaSede) {
		try {
			return usuarioSubprogramaDAOImpl2.findCodeSede(codeSubprogramaSede);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Long findCodePrograma(Long codeSubSede) {
		try {
			return usuarioSubprogramaDAOImpl2.findCodePrograma(codeSubSede);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

}
